package com.uva.dbcs.gestionDeUsuarios.dominio;

import java.io.Serializable;

import javax.persistence.*;

import java.util.List;


/**
 * The persistent class for the CLIENTE database table.
 * 
 */

//@Table(name="CLIENTE")
@Entity
@NamedQueries({
	@NamedQuery(name="Cliente.findAll", query="SELECT c FROM Cliente c"),
	@NamedQuery(name="Cliente.findByDni", query="SELECT c FROM Cliente c where c.nif = :nifCliente")


})
public class Cliente implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int idCliente;
	
	private String nif;

	private boolean bloqueado;

	private int codigoPostal;

	private String direccionPostal;

	private String email;

	private String nombre;

	private String password;

	//bi-directional many-to-one association to Carnetcliente
	@OneToMany(mappedBy="cliente" , cascade={CascadeType.ALL}, fetch= FetchType.EAGER)
	private List<Carnetcliente> carnetclientes;
	
	public Cliente(boolean bloqueado, int codigoPostal, String direccionPostal,
			String email, String nif, String nombre, String password,
			List<Carnetcliente> carnetclientes) {
		super();
		this.bloqueado = bloqueado;
		this.codigoPostal = codigoPostal;
		this.direccionPostal = direccionPostal;
		this.email = email;
		this.nif = nif;
		this.nombre = nombre;
		this.password = password;
		this.carnetclientes = carnetclientes;
	}
	
	public Cliente(boolean bloqueado, int codigoPostal, String direccionPostal,
			String email, String nif, String nombre, String password) {
		super();
		this.bloqueado = bloqueado;
		this.codigoPostal = codigoPostal;
		this.direccionPostal = direccionPostal;
		this.email = email;
		this.nif = nif;
		this.nombre = nombre;
		this.password = password;
	}
	

	public Cliente() {
	}

	public int getIdCliente() {
		return this.idCliente;
	}

	public void setIdCliente(int idCliente) {
		this.idCliente = idCliente;
	}

	public boolean getBloqueado() {
		return this.bloqueado;
	}

	public void setBloqueado(boolean bloqueado) {
		this.bloqueado = bloqueado;
	}

	public int getCodigoPostal() {
		return this.codigoPostal;
	}

	public void setCodigoPostal(int codigoPostal) {
		this.codigoPostal = codigoPostal;
	}

	public String getDireccionPostal() {
		return this.direccionPostal;
	}

	public void setDireccionPostal(String direccionPostal) {
		this.direccionPostal = direccionPostal;
	}

	public String getEmail() {
		return this.email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getNif() {
		return this.nif;
	}

	public void setNif(String nif) {
		this.nif = nif;
	}

	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getPassword() {
		return this.password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public List<Carnetcliente> getCarnetclientes() {
		return this.carnetclientes;
	}

	public void setCarnetclientes(List<Carnetcliente> carnetclientes) {
		this.carnetclientes = carnetclientes;
	}

	public Carnetcliente addCarnetcliente(Carnetcliente carnetcliente) {
		getCarnetclientes().add(carnetcliente);
		carnetcliente.setCliente(this);

		return carnetcliente;
	}

	public Carnetcliente removeCarnetcliente(Carnetcliente carnetcliente) {
		getCarnetclientes().remove(carnetcliente);
		carnetcliente.setCliente(null);

		return carnetcliente;
	}

}